/**
 * problem_028.cpp
 * Copyright (C) 2011 - xrose
 */

#include <iostream>
#define square(x) (x)*(x)
#define M 1001

using namespace std;

int main (int argc, char const* argv[])
{
    int xMax = M-1;
    int xMin = 0;
    int yMax = M-1;
    int yMin = 0;

    int cols = yMax, rows = xMin;
    int Matrix[M][M];

    int sol = 0;    //0, 1, 2, 3

    for(int i = square(M); i>0; i--)
    {
        if(sol == 0)
        {
            //
            Matrix[xMin][cols]=i;
            cols--;
            if(cols == yMin)
            {
                sol = 1;
            }
        } else if (sol == 1)
        {
            //
            Matrix[rows][yMin] = i;
            rows++;
            if(rows == xMax)
            {
                sol = 2;
            }
        } else if (sol ==2)
        {
            //
            Matrix[xMax][cols] = i;
            cols ++;
            if(cols == yMax)
            {
                sol = 3;
            }
        } else if (sol == 3)
        {
            //
            Matrix[rows][yMax] = i;
            rows --;
            if(rows == xMin)
            {
                yMax--;
                xMax--;
                yMin++;
                xMin++;
                cols = yMax;
                rows = xMin;
                sol = 0;
            }
        }
    }
    int sum = 0;
//    for(int i = 0; i<M; i++)
//    {
//        for(int j = 0; j<M; j++)
//        {
//            cout<<Matrix[i][j]<<"|";
//        }
//        cout<<endl;
//    }
    for(int i=0; i<M; i++)
    {
        sum +=Matrix[i][i];
        sum+=Matrix[i][M-i-1];
    }
    cout<<endl;
    cout<<"SUM = "<<sum<<endl;
}

